#include "uart.h"

#include <QDebug>
#include <QEventLoop>
#include <QMessageBox>
#include <QString>
#include "ui_mainwindow.h"

#include <QTextCodec>   //中文支持
#include <QDir>

double frequency_extern = 1;

uart::uart(QObject *parent) : QObject(parent)
{
    m_serial = new QSerialPort();
    connect(m_serial,SIGNAL(readyRead()),this,SLOT(serial_read_slot()));
    //connect(&m_serial,SIGNAL(readyRead()),this,SLOT(serial_read_slot()));
}

uart::~uart()
{
    delete  m_serial;
}


void uart::serial_open()
{



}

void uart::serial_close()
{
    if (m_serial->isOpen())
    {
        m_timer.stop();
        m_serial->close();
    }
}

QSerialPort* uart::getSerialPort(void)
{
   return m_serial;
}

//QSerialPort uart::getSerialPort(void)
//{
//   return m_serial;
//}

void uart::serial_write(const QString data)
{
    QString a = data;
    a.remove(QRegExp("\\s"));
   // QByteArray d = m_t.string_to_hex(data);
   // m_serial.write(d);
}


//QByteArray a ;
// QString rx_buf_tmp = a ;
// rx_buf_tmp.prepend(a);
// ui->rx_buf->insertPlainText(rx_buf_tmp); //追加显示，末尾不会添加
QString uart::getRxString(void)
{
   return rx_buf;
}

QByteArray temp_input,rx_input ;
QString uart::serial_read()
{
   temp_input.clear();
// QByteArray a = m_serial->readAll();
   temp_input = m_serial->readAll();
   rx_input.append(temp_input);
   if(!rx_input.endsWith("\r\n"))
   {
      return 0;
   }

    qDebug()<<"->:"<<rx_input.data()<<"size:"<<rx_input.size();
     QString b = rx_input.toHex();
    int c = rx_input.indexOf("adc:");

    if(c==-1)
     {
        qDebug()<<"no adc:";
        temp_input.clear();
        rx_input.clear();
        return 0;
     }
    QString str=QString(rx_input);
     c = c+4;
    rx_input = rx_input.mid(c,4);
    bool d = 0;
    int e = rx_input.toInt(&d,10);
    frequency_extern = static_cast<double>(e);
    qDebug()<<"freq:->"<<frequency_extern;
  //  if(!b.isEmpty())
  //  {
  //
  //  }
   rx_input.clear();
    return str;
}

void uart::clrRxString(void)
{
   rx_buf.clear();

}
void uart::serial_read_slot()
{
   rx_buf = serial_read();
}
